package com.gzy.rpsm_admin.pojo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 对要返回给前端的数据进行统一格式的封装
 */
@Data
@ApiModel
public class ResponsePojo<T> {
    @ApiModelProperty(value = "响应码状态：1成功，2失败")
    private int code;// 响应码状态：1成功，2失败
    @ApiModelProperty(value = "响应的说明信息")
    private String message; // 响应的说明信息
    @ApiModelProperty(value = "响应的数据")
    private T data; // 响应的数据

    public ResponsePojo(T t) {
        this.data = t;
        this.code = 1;
        this.message = "";
    }

    public ResponsePojo(T t, String message, int code) {
        this.data = t;
        this.code = code;
        this.message = message;
    }

    /**
     * 静态方法上的泛型，需要在前面声明一个<T>
     * 这个<T>与类级别上的泛型无关(甚至类上可以没有泛型)
     * 而非静态方法上的泛型，直接写
     * public ResponsePojo<T> success(T t)就行，
     * 但类上必须有泛型声明
     */
    public static <T>ResponsePojo<T> success(T t){
        return new ResponsePojo(t);
    }

    /*public ResponsePojo<T> success(T t){
        return new ResponsePojo(t);
    }*/

    public static <T>ResponsePojo<T> fail(T t,String message){
        return new ResponsePojo(t,message,2);
    }
}
